-- CB40A020.A
--
--                             Grant of Unlimited Rights
--
--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained 
--     unlimited rights in the software and documentation contained herein.
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making 
--     this public release, the Government intends to confer upon all 
--     recipients unlimited rights  equal to those held by the Government.  
--     These rights include rights to use, duplicate, release or disclose the 
--     released technical data and computer software in whole or in part, in 
--     any manner and for any purpose whatsoever, and to have or permit others 
--     to do so.
--
--                                    DISCLAIMER
--
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED 
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE 
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--
-- OBJECTIVE:
--      See CB40A021.AM.
--
-- TEST DESCRIPTION:
--      See CB40A021.AM.
--
-- TEST FILES:
--      This test consists of the following files:
--
--         FB40A00.A
--      => CB40A020.A
--         CB40A021.AM
--
--
-- CHANGE HISTORY:
--      06 Dec 94   SAIC    ACVC 2.0
--      02 Nov 96   SAIC    ACVC 2.1: Modified prologue.
--
--!


package FB40A00.CB40A020_0 is    -- package Text_Parser.Processing 

   function Count_AlphaNumerics (Text : in String) return Natural;

end FB40A00.CB40A020_0;


     --=================================================================--


-- Text_Parser.Processing.Process_Text 
with Report;
private procedure FB40A00.CB40A020_0.CB40A020_1 (Text : in String);

procedure FB40A00.CB40A020_0.CB40A020_1 (Text : in String) is
   Pos : Natural := Text'First - 1;
begin
   loop   -- Process string, raise exception upon completion.
      Pos := Pos + 1;
      if Pos > Text'Last then
         raise Completed_Text_Processing; 
      elsif (Text (Pos) in 'A' .. 'Z') or
            (Text (Pos) in 'a' .. 'z') or
            (Text (Pos) in '0' .. '9') then
         Increment_AlphaNumeric_Count;
      else
         Increment_Non_AlphaNumeric_Count;
      end if;
   end loop;
   -- No exception handler here, exception propagates.
   Report.Failed ("No exception raised in child package subprogram");
end FB40A00.CB40A020_0.CB40A020_1;


     --=================================================================--


with FB40A00.CB40A020_0.CB40A020_1;   -- "with" of  private child subprogram
                                      -- Text_Parser.Processing.Process_Text 
package body FB40A00.CB40A020_0 is

   function Count_AlphaNumerics (Text : in String) return Natural is
   begin
      FB40A00.CB40A020_0.CB40A020_1 (Text);  -- Call prvt child proc.
      return (AlphaNumeric_Count);           -- Global maintained in parent.
      -- No exception handler here, exception propagates.
   end Count_AlphaNumerics;

end FB40A00.CB40A020_0;
